#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

void runChild()
{
    int cnt = 5;
    while(cnt--)
    {
        printf("Child: pid:%d, ppid:%d\n", getpid(), getppid());
        sleep(1);
    }
}

int main()
{
    int N = 10;
    for(int i = 0; i < N; i++)
    {
        pid_t pid = fork();
        if(pid > 0)
        {
            //father
        }
        else if (pid == 0)
        {
            //child 
            runChild();
            //printf("create child sucess!, pid: %d\n", getpid());
            exit(0);
        }
        else
        {
            perror("fork:");
        }
    }

    //sleep(10);

    //wait
    for(int i = 0; i < N; i++)
    {
        pid_t id = wait(NULL);
        if(id > 0)
        {
            printf("wait %d sucess\n", id);
        }
        else
        {
            printf("wait %d fail\n", id);
        }
    }

    sleep(5);

  //  pid_t pid = fork();
  //  if(pid < 0)
  //  {
  //      perror("fork:");
  //      return 1;
  //  }
  //  else if (pid == 0)
  //  {
  //      int cnt = 5;
  //      while(cnt)
  //      {
  //          printf("Child :pid :%d, ppid:%d, cnt:%d\n", getpid(), getppid(), cnt);
  //          cnt--;
  //          sleep(1);
  //      }
  //      exit(0);
  //      // child
  //  }
  //  else
  //  {
  //      int cnt = 10;
  //      while(cnt)
  //      {
  //          printf("Father :pid :%d, ppid:%d, cnt:%d\n", getpid(), getppid(), cnt);
  //          cnt--;
  //          sleep(1);
  //      }
  //      pid_t ret = wait(NULL);
  //      if(ret == pid)
  //      {
  //          printf("wait sucess, ret:%d\n", ret);
  //      }
  //      else
  //      {
  //          printf("wait fail, ret:%d\n", ret);

  //      }
  //      //parent
  //  }
}

